import pandas as pd

# 1. 读取数据
df = pd.read_excel('exam.xlsx', header=0)

# 2. 切片取题型
single_choice = df.iloc[:, 0:10].astype(float)
fill_blank    = df.iloc[:, 10:16].astype(float)
calc          = df.iloc[:, 16:22].astype(float)

# 3. 计算总分
df['单选总分'] = single_choice.sum(axis=1)
df['填空总分'] = fill_blank.sum(axis=1)
df['计算总分'] = calc.sum(axis=1)

# 4. 判定“未认真完成考试过程”
df['判定结果'] = df['计算总分'].apply(lambda x: '未认真完成' if x == 0 else '有效考试')

# 5. 计算原始 Excel 行号，并筛选“未认真完成”行
#    由于 header=0，数据索引 0 对应 Excel 第 2 行；所以 Excel 行号 = df.index + 2
df['原始行号'] = df.index + 2

# 6. 筛选并输出
bad = df[df['判定结果'] == '未认真完成']
print("以下记录判定为“未认真完成”，对应 Excel 原始行号：")
print(bad['原始行号'].tolist())

# 如果需要更详细地查看这些行，可以：
print(bad[['原始行号', '单选总分', '填空总分', '计算总分', '判定结果']])
